import { IPSDELogicNodeBase } from './ipsdelogic-node-base';
import { IPSDEMSLogicLink } from './ipsdemslogic-link';
import { IPSDEMainState } from '../mainstate/ipsdemain-state';

/**
 *
 * 子接口类型识别属性[logicNodeType]
 * @export
 * @interface IPSDEMSLogicNode
 */
export interface IPSDEMSLogicNode extends IPSDELogicNodeBase {
  /**
   * 左侧位置
   * @type {number}
   * @default 0
   */
  leftPos: number;

  /**
   * 逻辑节点连出连接集合
   *
   * @type {IPSDEMSLogicLink[]}
   */
  getPSDEMSLogicLinks(): IPSDEMSLogicLink[] | null;

  /**
   * 逻辑节点连出连接集合
   *
   * @type {IPSDEMSLogicLink[]}
   */
  get psDEMSLogicLinks(): IPSDEMSLogicLink[] | null;

  findPSDEMSLogicLink(objKey: any): IPSDEMSLogicLink | null;

  /**
   * 实体主状态
   *
   * @type {IPSDEMainState}
   */
  getPSDEMainState(): IPSDEMainState | null;

  /**
   * 实体主状态
   *
   * @type {IPSDEMainState}
   */
  get psDEMainState(): IPSDEMainState | null;

  /**
   * 实体主状态（必须存在）
   *
   * @type {IPSDEMainState}
   */
  getPSDEMainStateMust(): IPSDEMainState;

  /**
   * 上方位置
   * @type {number}
   * @default 0
   */
  topPos: number;
}
